package com.cailu.rabmq.sender.sender;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.cailu.common.constant.DelaySenderEessageCommon;
import com.cailu.rabmq.sender.message.ExpirationMessagePostProcessor;

/**
 * @author cailu
 * @filename DelaySenderTemplate
 * @description 延迟消费 配置在消息上
 * @date 2020/3/30 17:00
 */
@Component
public class DelaySenderEessageTemplate {

	private Logger logger = (Logger) LoggerFactory.getLogger(this.getClass());

	@Autowired
	private RabbitTemplate rabbitTemplate;


	/**
	 * 功能描述 配置在消息上的延迟消费
	 * 在发布消息时 一定要注意 发布的消息 是在【延迟队列】中的【缓冲队列】里
	 * 通过TTL的绑定 使其在 死信队列 中 按照时间 自动消化掉
	 * @return void
	 * @author cailu
	 * @date 2020/3/31 11:19
	 */
	public void delayQueuePerMessageTTL() {
		//延迟的时间 毫秒
		long expiration = 30000;
		rabbitTemplate.convertAndSend(DelaySenderEessageCommon.DELAY_EXCHANGE_QUEUE_TTL_NAME,
				(Object) ("Message From delay_exchange_queue_ttl_name with expiration " + expiration),
				new ExpirationMessagePostProcessor(expiration));
	}


}
